home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / cpu / tms34010 / tms34010.h < prev   
C/C++ Source or Header  |  2000-04-04  |  4KB  |  99 lines

  1. /*** TMS34010: Portable TMS34010 emulator ***********************************
  2.  
  3.     Copyright (C) Alex Pasadyn/Zsolt Vasvari 1998
  4.      originally based on code by Aaron Giles
  5.  
  6.     Public include file
  7.  
  8. *****************************************************************************/
  9.  
  10. #ifndef _TMS34010_H
  11. #define _TMS34010_H
  12.  
  13. #include "osd_cpu.h"
  14.  
  15. #define TMS34010_AVGCYCLES            1
  16. #define TMS34010_FAST_STACK            0
  17.  
  18. enum {
  19.     TMS34010_PC=1, TMS34010_SP, TMS34010_ST,
  20.     TMS34010_A0, TMS34010_A1, TMS34010_A2, TMS34010_A3,
  21.     TMS34010_A4, TMS34010_A5, TMS34010_A6, TMS34010_A7,
  22.     TMS34010_A8, TMS34010_A9, TMS34010_A10, TMS34010_A11,
  23.     TMS34010_A12,TMS34010_A13,TMS34010_A14,
  24.     TMS34010_B0, TMS34010_B1, TMS34010_B2, TMS34010_B3,
  25.     TMS34010_B4, TMS34010_B5, TMS34010_B6, TMS34010_B7,
  26.     TMS34010_B8, TMS34010_B9, TMS34010_B10, TMS34010_B11,
  27.     TMS34010_B12,TMS34010_B13,TMS34010_B14 };
  28.  
  29. /* Interrupt Types that can be generated by outside sources */
  30. #define TMS34010_INT_NONE    0x0000
  31. #define TMS34010_INT1        0x0002    /* External Interrupt 1 */
  32. #define TMS34010_INT2        0x0004    /* External Interrupt 2 */
  33.  
  34. /* Configuration structure */
  35. struct tms34010_config
  36. {
  37.     UINT8    halt_on_reset;                        /* /HCS pin, which determines HALT state after reset */
  38.     void    (*output_int)(int state);            /* output interrupt callback */
  39.     void    (*to_shiftreg)(UINT32, UINT16 *);    /* shift register write */
  40.     void    (*from_shiftreg)(UINT32, UINT16 *);    /* shift register read */
  41.     void    (*display_addr_changed)(UINT32 offs, int rowbytes, int scanline);/* display address changed */
  42.     void    (*display_int_callback)(int scanline);/* display interrupt callback */
  43. };
  44.  
  45. /* PUBLIC FUNCTIONS */
  46. extern void tms34010_reset(void *param);
  47. extern void tms34010_exit(void);
  48. extern int    tms34010_execute(int cycles);
  49. extern unsigned tms34010_get_context(void *dst);
  50. extern void tms34010_set_context(void *src);
  51. extern unsigned tms34010_get_pc(void);
  52. extern void tms34010_set_pc(unsigned val);
  53. extern unsigned tms34010_get_sp(void);
  54. extern void tms34010_set_sp(unsigned val);
  55. extern unsigned tms34010_get_reg(int regnum);
  56. extern void tms34010_set_reg(int regnum, unsigned val);
  57. extern void tms34010_set_nmi_line(int linestate);
  58. extern void tms34010_set_irq_line(int irqline, int linestate);
  59. extern void tms34010_set_irq_callback(int (*callback)(int irqline));
  60. extern void tms34010_internal_interrupt(int type);
  61. extern const char *tms34010_info(void *context, int regnum);
  62. extern unsigned tms34010_dasm(char *buffer, unsigned pc);
  63.  
  64. extern void TMS34010_State_Save(int cpunum, void *f);
  65. extern void TMS34010_State_Load(int cpunum, void *f);
  66.  
  67. /* Host control interface */
  68. #define TMS34010_HOST_ADDRESS_L        0
  69. #define TMS34010_HOST_ADDRESS_H        1
  70. #define TMS34010_HOST_DATA            2
  71. #define TMS34010_HOST_CONTROL        3
  72. extern void tms34010_host_w(int cpunum, int reg, int data);
  73. extern int tms34010_host_r(int cpunum, int reg);
  74.  
  75. /* Sets base and offset of the stack */
  76. void TMS34010_set_stack_base(int cpu, UINT8* stackbase, UINT32 stackoffs);
  77.  
  78. /* Reads & writes to the 34010 I/O registers; place at TOBYTE(0xc0000000) */
  79. WRITE_HANDLER( TMS34010_io_register_w );
  80. READ_HANDLER( TMS34010_io_register_r );
  81.  
  82. /* Checks whether the display is inhibited */
  83. int TMS34010_io_display_blanked(int cpu);
  84.  
  85. int TMS34010_get_DPYSTRT(int cpu);
  86.  
  87. /* PUBLIC GLOBALS */
  88. extern int tms34010_ICount;
  89.  
  90.  
  91. /* Use this macro in the memory definitions to specify bit-based addresses */
  92. #define TOBYTE(bitaddr) ((UINT32) (bitaddr)>>3)
  93.  
  94. #ifdef MAME_DEBUG
  95. extern unsigned Dasm34010 (char *buff, unsigned _pc);
  96. #endif
  97.  
  98. #endif /* _TMS34010_H */
  99.